package cn.leedsoft.and.crimeintent.common;

import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;

/**
 * Created by leeds on 2016/9/7 18:16.
 */
public abstract class DataLoader<D> extends AsyncTaskLoader<D> {
    private D mData;

    public DataLoader(Context context) {
        super(context);
    }

    @Override
    protected void onStartLoading() {
        if(mData != null) {//在onStartLoading()方法中，它会检查数据是否已加载，
            deliverResult(mData);//如已加载则立即发送；
        } else {
            forceLoad();//否则，就调用超类的forceLoad()方法去获取数据
        }
    }

    @Override
    public void deliverResult(D data) {//Sends the result of the load to the registered listener
        mData = data;//先将新数据对象存储起来，
        if(isStarted()) {//然后如果loader已启动，则调用超类版本的方法将数据发送出去
            super.deliverResult(data);
        }
    }
}
